package com.demo.controller;

import java.util.Random;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author: lixiaodong
 * @Description:  算法
 * @Date: 2022/10/11 15:24
 * @Parms:
 * @ReturnType:
 */

public class AlgorithA {
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        System.out.println("请输入任意字符串：");
//        String str = sc.nextLine();
//        System.out.println("字符串长度:"+str.length() );
//        Pattern p = null;
//        Matcher m = null;
//        p = Pattern.compile("([\u4e00-\u9fa5]+)");
//        m = p.matcher(str);
//        String value = null;
//        while (m.find()) {
//            value = m.group(0);
//            System.out.println(value);
//        }
//    }
////        1.任意输入一段字符串，输出字符串的长度，中文个数，小写字母个 数，大写字母个数，数字个数，符号个数
//        public void text1(){
//            Scanner sc = new Scanner(System.in);
//            System.out.println("请输入任意字符串：");
//            String str = sc.nextLine();
//            System.out.println("字符串长度:"+str.length() );
//            Pattern p = null;
//            Matcher m = null;
//            p = Pattern.compile("([\u4e00-\u9fa5]+)");
//            m = p.matcher(str);
//            String value = null;
//            while (m.find()) {
//                value = m.group(0);
//                System.out.println(value);
//            }
//        }
//
//    public static void main(String[] args) {
//        for (int i =0 ;i< 16 ;i++) {
//            String password = randomPassword(getInput());
//            System.out.println("您随机出来的密码为:" + password.toString());
//        }
//    }

    /** 获取用户输入的密码位数 */
    public static int getInput(){
        System.out.println("请输入您想获取的密码位数:");
        int input = new Scanner(System.in).nextInt();
        return input;
    }

    /** 随机出用户输入的密码位数的密码,从大小写字母,数字中取值 */
    public static String randomPassword(int num){
        char[] passwor = new char[num];//创建char数组接收每一位随机出来的密码
        Random rand = new Random();
        //在ASCII码表中,48-57 数字,65-90 大写字母,97-122 小写字母
        for (int i = 0; i <passwor.length ; i++) {
            int choice = rand.nextInt(3);
            int lowercase = rand.nextInt(26)+65;//小写字母ASCII码表范围
            int uppercase = rand.nextInt(26)+97;//大写字母ASCII码表范围
            int figure = rand.nextInt(10)+48;//数字ASCII码表范围
            switch (choice){//从大写字母.小写字母.数字中随机取值
                case 0:passwor[i]=(char)lowercase;break;
                case 1:passwor[i]=(char)uppercase;break;
                case 2:passwor[i]=(char)figure;
            }
        }
        String password = new String(passwor);
        return password;
    }


}
